package sys

import (
	"handitem/xxb-gin-web/global"
	"handitem/xxb-gin-web/model/sys"
)

// 定义bbs的service提供BbsCategory的数据curd的操作

type SysMenusService struct{}

// 添加
func (service *SysMenusService) SaveSysMenus(sysMenus *sys.SysMenus) (err error) {
	err = global.KSD_DB.Create(sysMenus).Error
	return err
}

// 修改
func (menu *SysMenusService) UpdateSysMenus(sysMenus *sys.SysMenus) (err error) {
	err = global.KSD_DB.Model(sysMenus).Updates(sysMenus).Error
	return err
}

// 删除
func (menu *SysMenusService) DelSysMenusById(id uint) (err error) {
	var sysMenus sys.SysMenus
	err = global.KSD_DB.Where("id = ?", id).Delete(&sysMenus).Error
	return err
}

// 批量删除
func (menu *SysMenusService) DeleteSysMenusByIds(sysMenuss []sys.SysMenus) (err error) {
	err = global.KSD_DB.Delete(&sysMenuss).Error
	return err
}

// 根据id查询信息
func (menu *SysMenusService) GetSysMenusByID(id uint) (sysMenuss *sys.SysMenus, err error) {
	err = global.KSD_DB.Where("id = ?", id).First(&sysMenuss).Error
	return
}

// 递归形成tree
func (menu *SysMenusService) FindMenus() (categories []*sys.SysMenus, err error) {
	err = global.KSD_DB.Unscoped().Order("sort asc").Find(&categories).Error
	return categories, err
}

func (menu *SysMenusService) Tree(allDbMenus []*sys.SysMenus, parentId uint) []*sys.SysMenus {
	var nodes []*sys.SysMenus //---------准备空教室
	// 开始遍历父类
	for _, dbMenu := range allDbMenus {
		if dbMenu.ParentId == parentId {
			dbMenu.Children = append(dbMenu.Children, menu.Tree(allDbMenus, dbMenu.ID)...)
			nodes = append(nodes, dbMenu)
		}
	}
	return nodes
}
